package com.server.service.data;

import java.util.List;

import com.client.service.data.InterlocuteurDataService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.server.store.PoolManager;
import com.server.store.data.InterlocuteurManager;
import com.shared.context.User;
import com.shared.data.TypeIData;
import com.shared.model.Apporteur;
import com.shared.model.Interlocuteur;
/**
 * Implémentation du service de gestion des {@link Interlocuteur}
 * @author queyroi
 *
 */
public class InterlocuteurDataServiceImpl extends RemoteServiceServlet implements InterlocuteurDataService {

	public String delete(Interlocuteur interlocuteur)	throws IllegalArgumentException {
		checkInput(interlocuteur);
		checkCurrentIsAdministrator();
		((InterlocuteurManager) PoolManager.get().getDataManager(TypeIData.INTERLOCUTEUR)).delete(interlocuteur);
		return null;
	}

	public List getList() throws IllegalArgumentException {
		checkCurrentIsAdministrator();
		return ((InterlocuteurManager) PoolManager.get().getDataManager(TypeIData.INTERLOCUTEUR)).getList();
	}

	public String save(Interlocuteur interlocuteur)	throws IllegalArgumentException {
		checkInput(interlocuteur);
		checkCurrentIsAdministrator();
		((InterlocuteurManager) PoolManager.get().getDataManager(TypeIData.INTERLOCUTEUR)).save(interlocuteur);
		return null;
	}

	public String update(Interlocuteur interlocuteur)	throws IllegalArgumentException {
		checkInput(interlocuteur);
		checkCurrentIsAdministrator();
		((InterlocuteurManager) PoolManager.get().getDataManager(TypeIData.INTERLOCUTEUR)).update(interlocuteur);
		return null;
	}
	
	public void checkInput(Object obj) throws IllegalArgumentException{
		if(obj==null) throw new IllegalArgumentException("Echec d'enregistrement : vérifier les paramètres");
	}
	
	public void checkCurrentIsAdministrator() throws IllegalArgumentException{
		if(!((User) getThreadLocalRequest().getSession().getAttribute("user")).isAdministrator()) throw new IllegalArgumentException("Seul un administrateur est autorisé à réalisé cette opération");
	}

}
